package com.situ.stmall.config;

import java.io.File;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import com.situ.stmall.service.PicService;

import ch.qos.logback.core.util.FixedDelay;

@Component
@EnableScheduling  //这是一个定时任务的类，定义定时任务
public class ClearPicTask {
	
	@Value("${spring.servlet.multipart.location}")
	private String  path;
	
	@Autowired
	private PicService picService;
	
	

	/**
	 * 清理无用的图片
	 */
	@Scheduled(cron = "0 53 14 * * ?")
	/*
	 * cron设置一个表达式，指定定时任务执行时间
	 *     秒 分 时 日 月 周 年
	 *  *任意时刻
	 *   0 0 1 * * ？
	 */
	public void ClearPic() {
		System.out.println("定时任务");
		
		//要清理的图片在哪里
		File picDir = new File(path);
		File[] pics = picDir.listFiles();
		
		//查询所有图片当前系统下
		List<String> picList = picService.getAll();
		
		//遍历这些图片，检查他们是否需要清理
		for (File pic : pics) {
			
			if (pic.isFile()) {
				String picName = pic.getName();
				
				//查询判断该图片是否需要清理
				//图片可能被哪些地方使用
				if ( !picList.contains(picName)) {
					//删除该文件
					pic.delete();
				}				
			}									
		}
		System.out.println("图片删除");
	}
	
	@Scheduled(fixedDelay = 24*60*60*1000)
	/*
	 * fixedDelay 设置的定时任务的固定时间间隔
	 * 单位是毫秒
	 * 当项目启动后，第一次执行，每隔指定时间就执行一次
	 */
	public void test() {
		System.out.println("定时任务延迟");
	}
}
